package Disparos;

import javax.swing.Icon;
import javax.swing.ImageIcon;

import General.Elemento;

public abstract class Disparo extends Elemento {

	
	protected int poderDisparo;
	
	/**
	 * Metodo que retorna el poder de disparo.  
	 * @return un entero que indica el poder de disparo.
	 */
	public int realizarAccion(){
		return poderDisparo;
	}

	
	/**
	 * Metodo que setea el valor del poder del disparo.
	 * @param pod valor a modificar.
	 */
	public void setPoderDisparo(int pod){
		poderDisparo = pod;
	}
	
	/**
	 * Permite que el disparo avance sobre el tablero.
	 */
	public void avanzar(){
		x += 3;
	}
	
	/**
	 * Determina si el disparo se encuentra mas alla del
	 * limite derecho del tablero.
	 * @return un valor booleano que si se encuentra fuera 
	 * de limite devuelva verdadero. Falso en caso contrario.
	 */
	public boolean fueraTablero() {
		if(getX() > 795){
			game.eliminarDisparo(this);
			return true;
		}
		return false;
	}
	
	/**
	 * Metodo abstracto. Cada clase que herede de Disparo 
	 * debera avanzar lo correspondiente.
	 */
	public abstract void run();
	
	/**
	 * Retorna la imagen asociada a la explosion de un disparo.
	 */
	public Icon getDisparoExplosion()
	{
		return new ImageIcon(getClass().getResource("/Imagenes/boom.png"));
	}
	/**
	 * Se encarga de simular la explosion de un disparo, para luego eliminarlo.
	 */
	public void explosion() {
		ImageIcon aux = (ImageIcon) getDisparoExplosion();
		EG.setImagen(aux);
		try {
			this.sleep(500);
			} 
		catch (InterruptedException e) {}
		game.eliminarDisparo(this);
	}
	
}
